import { userAccountCheck } from '@/api/user'
// 定义校验规则提供给vee-validate组件使用
const schema = {
  // 校验account
  account (value) {
    // 校验失败，return 错误提示
    if (!value) return '用户名不能为空'
    // 正则校验
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '字母开头且6-20个字符'
    // 校验通过，return true
    return true
  },
  // 服务端校验用户名是否已存在
  async accountApi (value) {
    // 校验失败，return 错误提示
    if (!value) return '用户名不能为空'
    // 正则校验
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '字母开头且6-20个字符'
    // 服务端校验：发送请求校验用户名是否已经存在
    const { result } = await userAccountCheck(value)
    if (result.valid === true) return '用户名已被注册'
    // 校验通过，return true
    return true
  },
  password (value) {
    if (!value) return '请输入密码'
    if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
    return true
  },
  // 确认密码，可以在第二个参数中解构出 from 表单的数据
  rePassword (value, { form }) {
    // console.log(form)
    if (!value) return '请输入密码'
    if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
    // 检查两次输入的密码是否一致
    if (form.password !== value) return '两次输入的密码不一致'
    return true
  },
  mobile (value) {
    if (!value) return '请输入手机号'
    if (!/^1[3-9]\d{9}$/.test(value)) return '手机号格式错误'
    return true
  },
  code (value) {
    if (!value) return '请输入验证码'
    if (!/^\d{6}$/.test(value)) return '验证码是6个数字'
    return true
  },
  isAgree (value) {
    if (!value) return '请勾选同意用户协议'
    return true
  }
}

export default schema
